package com.fqgame.user.task;

import com.fqgame.user.service.UserInfoService;
import com.fqgame.user.service.UserOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 定时任务类
 */
@Slf4j
@Component
public class ScheduledTasks {

    @Autowired
    private UserInfoService userInfoService;

    @Autowired
    private UserOrderService userOrderService;

    /**
     * 每天凌晨1点执行用户数据统计
     * cron表达式：秒 分 时 日 月 周
     */
    @Scheduled(cron = "0 0 1 * * ?")
    public void statisticsUserData() {
        log.info("定时任务：开始执行用户数据统计");
        try {
            userInfoService.statisticsUserData();
        } catch (Exception e) {
            log.error("用户数据统计任务执行失败", e);
        }
    }

    /**
     * 每5分钟检查一次超时订单
     */
    @Scheduled(fixedRate = 300000) // 5分钟 = 300000毫秒
    public void cancelTimeoutOrders() {
        log.info("定时任务：开始检查超时订单");
        try {
            userOrderService.cancelTimeoutOrders();
        } catch (Exception e) {
            log.error("超时订单检查任务执行失败", e);
        }
    }
}